//**************************************************************************************************************
// CLASS: Operand
//
// DESCRIPTION
// Operand represents an operand in an assembly language instruction. It is the base class of the Integer,
// Label, Register, and Variable classes.
//
// AUTHOR INFORMATION
// Group 2
// Tyler Williams
// Lauren Walker
// Cameron Stewart
// Fatimah Alowah
//**************************************************************************************************************
// Preprocessor guard.
#ifndef OPERAND_HPP
#define OPERAND_HPP

#include <string>
#include "Types.hpp"

//==============================================================================================================
// CLASS: Operand
//==============================================================================================================

// Write the class declaration
class Operand {

public:

Operand
    (
    std::string const& pOpString = ""
    );

Operand
    (
    Operand const& pOperand
    );

~Operand
    (
    );

std::string GetString
    (
    )
    const;

Operand& operator=
    (
    Operand const& pOperand
    );

void SetString
    (
    std::string const& pOpString
    );

protected:

void Copy
    (
    Operand const& pOperand
    );

private:

std::string mOpString;

};
// End preprocessor guard.
#endif
